Contents
Neural Network (Basic Ideas)
提要
回顧一下 framework :
這次要探討的有:
- 什麼是 model ?
- 什麼是 “best” function ?
- 如何挑選 “best” function ?
而首先要考慮的是今天要學習做到的是什麼,這邊給了 Classification 中的兩種:
- Binary Classification
- Multi-class Classification
之前有提過的 筆記。
What is model
A Layer of Neuron
要如何來建 input 是 n dimension ,output 是 m dimension 的 model 呢?
我們只要用一層 Layer 的 Neuron 就可做到了。
首先一個 Neuron 的運作在上一章有大致講過,其 input 是 n 維的 vector ,output 是個 scalar 。另外對於 bias 的描述方式還有另一種,把 input 多一個 dimension 為 1 ,而其 weight 就是 bias 的值。
而顯然的目前這樣只能回答 binary classification 的問題,如下圖:
但假如今天是要辨識 10 個數字,10 個 class (1,2,3,4,5,6,7,8,9,0),就要增加 neurons 到 10 個,最後就會有 10 個純量,也就是 m 維的 vector。每一維對應到一個 class 。最後要決定是哪個數字,就只需要看哪一個 neuron 出來的值($y_1,y_2,\ldots,y_m$)最大即可。
但很快發現了一些問題是無法解決的,例如 XOR ,不管怎麼調整各項數值都無法做到,有點像是從座標中找一條線將這四個點分成我們要的兩類。
Neural Network
那解決方法就是利用 兩個 Layer 來解決,這裡以 XNOR 來看,右上角是其邏輯電路圖。
先用兩個 neuron 來模擬圖中兩個 AND gate ,再將它們的 output 丟到另一個 neuron 模擬 OR gate。
把一個 neuron 的 output 當作另一個 neuron 的 input ,這樣子其實就是一個 Neural Network 了。
中間那些 output 被當成 input 的 neurons 又稱為 Hidden Neurons。
大概的過程:
可以看到最後有辦法畫出一條線將它們區隔開來。至於如何找出 $a_1,a_2$ 的值,就是以後的故事了。
Neural Network as Model
從 input 到第一層 layer ,第一層 layer 的 output 再傳到第二層,這樣一直下去直到最後一層。如同前面所提,如果你希望最後是個 m 為的 vector ,那最後一層就要有 m 個 neuron 。
我們這邊稱 input 的 vector 為 input layer。
而實際上 neuron 這邊的這些連結是不一定這樣一層一層往下連的,但這邊我們考慮的就只有第一層連第二層 … 這樣一直下去。
Feedforward: 它傳遞訊息的方式從 input 到 output 是單向的 (維基百科)。
Fully connected: 兩 layer 間的 neurons 兩兩相連,也就是上一層的每一個 neuron 會接到下一層的每一個 neuron 。
Deep Neural Network : 有很多層的 hidden layers。
Notation
我這邊用大寫 L 來表示第幾層 Layer 。可以往上拉在看一下 Single Neuron 的圖 #
$a^L_i$ : 第 L 層 的第 i 個 neuron 的 output 。
$a^L$ : 第 L 層每一個 neuron 的 output => vector 。
這邊要特別注意上下標所代表的意思。
$w^L_{ij}$ : “第 L-1 層中的第 j 個 neuron “ 到 “第 L 層中的第 i 個 neuron “ 之間的 weight。
$W^L$ : “第 L-1 層” 到 “第 L 層” neuron 的所有 weight => matrix ,且其 row 的數量為 $N_L$ ,column 的數量為 $N_{L-1}$。 ($N_L$: 第 L 層中 neuron 的數量)。
$b^L_i$ : 第 L 層第 i 個 neuron 的 bias。
$b^L$ : 第 L 層中全部 neuron 的 bias => vector 。
$z^L_i$ : 第 L 層第 i 個 neuron 中 activation function 的 input。
$z^L$ : 第 L 層中全部 neuron 的 activation function 的 input => vector 。
特別注意下圖中 $z^L_i$ 的算法。
統整:
Relation between Layer Outputs
從下面這張圖就可以清楚知道為何 $w^L_{ij}$ 的下標方向要顛倒,否則在做 $W^La^{L-1}$矩陣乘法時,$W$ 就要做 transpose 了。
再來只要將 $z^L_i$ 通過 Activation function 就能得到 output。我們可以將 Activation function 直接定義在 $z^L$ vector 上。
將整個 network 寫成 Function:
第 2 個 $b^1$ 應該改成 $b^2$ 才對。
What is Best Function
Best Parameter
嚴格來說,我們上面提到的 $f(x) $ ,它並不只是一個 function ,它應該是一個 function set ,只要裡面的參數不同($W,b$),就是不同的 function 。
表示法如下圖:
$f(x;\theta)$
($\theta$ 是 parameter)
(第 2 個 $b^1$ 應該改成 $b^2$ 才對)
所以對於找一個最好的 function ,其實也就是找一組最好的 參數。
Cost Function
用來評估一組 parameter $\theta$ 它有多 糟糕 。通常表示成 $C(\theta)$ ,稱為 Cost function。
所以我們想找的 Best ,就是一組代進 Cost Function 後出來的值為 最小 的 parameter。
如果今天評估的是 parameter 有多 好 。
我們通常會用 $O(\theta)$ 來表示,稱為 Objective Function。
特別注意 $\hat{y}^r$ 它是指第 r 筆資料的 正確答案,且同樣是用 vector 存。與我們的 $f$ 得出的結果(vector)相減後,取 norm(範數) 長度。
目的就是希望找一組 $\theta$ 能 最小化 這 vector 間的距離。